/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import Entity.Usuario;

/**
 * Superclase comun a todos los controladores con funciones de utilidad (mensajes de error, acceso a parametros, etc)
 * @author ribadas
 */
public abstract class BaseController {

	private HttpSession session;
	
	public BaseController() {
		session = getCurrentSession(true);
	}
	
	protected HttpSession getCurrentSession(boolean b) {
		HttpSession s = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(b);
		return s;
	}
	
	protected Object getSessionParam(String param) {
		return session.getAttribute(param);
	}
	
	protected void unsetFlash() {		
		session.setAttribute("flash", null);
	}
	
	protected void setFlash(String message) {
		session.setAttribute("flash", message);
	}
	
	protected void setParam(String param, String value) {
		session.setAttribute(param, value);
	}
    
    /**
     * Recupera el valor asociado a un parametro de la página JSF
     * @param parametro
     * @return
     */
    protected String getParam(String parametro){
        FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> map = context.getExternalContext().getRequestParameterMap();
        return map.get(parametro);
    }

    /**
     * Recupera el id de tipo long asociado a un parametro de la página JSF
     * @param parametro
     * @return
     */
    protected long getParamId(String parametro){
        return Long.parseLong(getParam(parametro));
    }


}
